package main

import "fmt"

//演示管道的遍历

func main() {
	testChan := make(chan int, 10)
	testChan <- 10
	testChan <- 20
	//在不使用协程的情况，若不关闭管道，就直接遍历会死锁
	// for v := range testChan {
	// 	fmt.Printf("%v", v) //fatal error: all goroutines are asleep - deadlock!
	// }

	//道理很简单，管道中无数据的情况下是不能继续读取，除非编译后发现是存在可能继续存数据的可能
	//而不用协程，串行代码是能分析出不会继续放数据了，但是又没关闭，所以不好去读取
	close(testChan)
	for v := range testChan {
		fmt.Printf("%v \n", v)
	}
}
